#include <iostream>

using namespace std;
// 231. 2的幂
// 给你一个整数 n，请你判断该整数是否是 2 的幂次方。如果是，返回 true ；否则，返回 false 。
// 如果存在一个整数 x 使得 n == 2x ，则认为 n 是 2 的幂次方。

// 循环相除
class Solution {
public:
    bool isPowerOfTwo(int n) {
        if(n <= 0) return false;
        while(n % 2 == 0)
            n /= 2;
        return n == 1;
    }
};
int main() {
    std::cout << boolalpha << Solution().isPowerOfTwo(1) << std::endl;  // true
    std::cout << boolalpha << Solution().isPowerOfTwo(16) << std::endl; // true
    std::cout << boolalpha << Solution().isPowerOfTwo(3) << std::endl;  // false
    std::cout << boolalpha << Solution().isPowerOfTwo(4) << std::endl;  // true
    std::cout << boolalpha << Solution().isPowerOfTwo(5) << std::endl;  // false

    return 0;
}
